보안 도구 개발
asmspeak_02_CLI 워크플로우에 대한 생각
작성자 : Heehyeon Yoo|2025-12-11
# asmspeak# CLI# Workflow# Ghidra
CLI 워크플로우 정하기
지금 당장 중요한 건 분석 결과가 얼마나 쓸모 있는가지 프로그램의 껍데기가 아니다.
터미널에서 텍스트로 결과를 뱉어내는 방식(CLI)을 선택했다.
당장 만들기도 훨씬 쉽고, 자동화하기에도 편하다.
어떻게 쓰나?
복잡한 설정 없이 명령 한 줄만 쓰도록 해보자.
전체 코드를 다 볼 필요도 없다. 내가 보고 싶은 부분만 골라서 보도록.
- 바이너리 안에 뭐가 들었는지 쓱 훑어보고,
- 분석하고 싶은 구간(Stage)이나 함수를 찍어서,
- 명령어를 입력하면 주석 달린 파일이 나온다.
# 일단 바이너리 구조 확인 (뭐가 들었나?)
asmspeak map sample.exe
# "초기화 부분(Stage 1)이 궁금해. 초보자 모드로 쉽게 설명해줘."
asmspeak stage sample.exe 1 --mode junior --out sample_stage1.c
# "전체 요약만 빨리 보고 싶어. 시니어 모드로 핵심만."
asmspeak summarize sample.exe --mode senior --out summary.md
'Stage' 개념으로 나눈다
분석하다 보면 코드 전체를 처음부터 끝까지 정독하는 경우는 거의 없다.
보통은 "네트워크 기능만 보고 싶어"라든가 "메인 함수 진입 전까지만 볼래" 하는 식이다.
그래서 코드를 역할별로 쪼갰다.
- Stage 0: 프로그램이 켜지기 직전(런타임/부트스트랩)
- Stage 1: 이제 막 켜져서 준비하는 단계(초기화/엔트리)
- Stage 2: 밖이랑 소통하는 기능들(네트워크, 파일 읽기/쓰기)
- Stage 3: 진짜 핵심 기능(도메인 로직)
이렇게 나눠두면 내가 지금 어디를 보고 있는지, 무엇을 먼저 봐야 할지가 분명해진다.
각 스테이지별 분석량이 많다면 쪼개기도 해볼 것이다. 뭐 대강 스테이지 3-1, 3-2 하면 될 거다.
불필요한 정보에 파묻히지 않고 표적 수사하듯 코드를 파고들 수 있다.